Fault tolerance and scalability are two important requirements for server based systems. In a typical system, a server owns resources (e.g. a user's log-in to the server or files stored on the server) and provides the ability to find a resource. For example a file server provides the ability for users to store files on the server and also provides the ability for a user to look up a file in the system. The latter operation requires the ability to find the file in the system given a unique file name. Traditional approaches to fault tolerance typically use the primary/backup failover/failback model to assign resources to clusters. In this architecture, there is typically a standby backup cluster that takes over from the primary cluster once the primary cluster becomes unavailable.
Enhanced communication systems providing multi-modal communications operate in a similar fashion to (sometimes the same) data exchange networks where designated servers and their backups provide services (e.g. routing of calls). Session Initiation Protocol (SIP) is a commonly used communication protocol between components of such systems. When primary-backup relationships are used to assign users to clusters of servers in an enhanced communication system, several challenges may have to be overcome. For example, when and how to assign a user to a primary cluster or its backup, communication between the primary and backup clusters to determine when the user is to be handed over to the backup and back to the primary cluster, and comparable ones.